package com.boatAnchorAssistant.service.service.in;

import com.boatAnchorAssistant.pojo.entity.Alarm;
import nirvana.core.domains.vo.PageResult;
import com.boatAnchorAssistant.pojo.param.alarm.*;
import com.boatAnchorAssistant.pojo.vo.alarm.*;

import java.util.List;


/**
 * 【描 述】：报警列表服务
 * 【环 境】：J2SE
 * 【详 细】：
 */
public interface AlarmService {

    /**
     * 创建报警列表
     *
     * @param param
     */
    void createAlarm(CreateAlarmParam param);

    /**
     * 修改报警列表
     *
     * @param param
     */
    void editAlarm(EditAlarmParam param);

    /**
     * 移除报警列表
     *
     * @param id
     */
    void removeAlarm(Long id);

    /**
     * 启动/禁用报警列表
     *
     * @param id
     */
    void enabledAlarm(Long id);

    /**
     * 修改报警状态
     * @param param
     */
    void updateAlarmStatus(UpdateAlarmStatusParam param);

    /**
     * 获取报警列表详情
     *
     * @param id
     * @return
     */
    GetAlarmVo getAlarm(Long id);

    /**
     * 获取最近的一条报警
     * @return
     */
    GetAlarmVo selectOneAlarm();

    /**
     * 获取报警列表列表
     *
     * @param param
     * @return
     */
    PageResult<GetAlarmListVo> getAlarmList(GetAlarmListParam param);


    /**
     * 获取报警列表下拉列表
     *
     * @param param
     * @return
     */
    List<GetAlarmDownListVo> getAlarmDownList(GetAlarmDownListParam param);

    /**
     * 获取报警列表-报警等级！=3并且是15天之前的数据
     * @return
     */
    void cleanAlarmLevel();

    /**
     * 事件报警查询
     * @param param
     * @return
     */
    List<GetAlarmChartListVo> getAlarmChartList(GetAlarmChartListParam param);
}